package com.eva.framework;

import com.eva.epc.common.util.ESerializable;

/**
 * 处理器接口.<br>
 * 一个处理器实现者，在方法process(..)中可据job_dispatch_id找到对应的JobDispatcher，JobDispatcher
 * 又能据action_id进行对应动作的处理，以完全本次操作请求.
 * 
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @version 1.0]
 * @see HttpController
 */
public interface Processor
{
	/**
	 * 处理器的核心实现方法.<br>
	 * 可据job_dispatch_id找到对应的JobDispatcher，JobDispatcher又能据
	 * action_id进行对应动作的处理，以完成本次操作请求.
	 * 
	 * @param job_dispatch_id 作业调度ID
	 * @param action_id 动作ID
	 * @return 任意类型返回值
	 * @throws Exception 本方法调用中出现任何异常时都会抛出
	 */
	public abstract Object process(int job_dispatch_id,int action_id,Object newData,Object oldData
			,User user) throws Exception;
	
	
	public static class User implements ESerializable
	{
//		/** 登陆账号 */
//		protected String login_name;
//		/** 登陆账号姓名（或称登陆者昵称） */
//		protected String true_name;
//		/** 登陆密码（用户输入的原始密码明文文本） */
//		protected String login_psw;
//		/** 账号是否可用：0 不可用、1 可用，默认1 */
//		protected boolean valid = true;
	//	
//		/** 
//		 * 本字段用于存放用户成功登陆后，服务器当时的系统时间，用于返回给客户端后客户端检查本机时间以
//		 * 确保客户端的时间与服务器端时间相差太大，以保客户端的单据日期不会太离谱 .
//		 */
//		private String serverTimeAtLogin = null;
		
		/** 
		 * 本客户端的IP地址，目前仅用于登陆成功后，存放服务端读取出的客户端IP地址（理论上是外网IP），
		 * 这样返回给客户端后在诸如考勤登记时就可以记下IP地址，以防作弊 。
		 * 
		 * 2011-06-23 add by JS.
		 */
		private String ip = null;


		private String userId;

		private String nickname;

		private String userMail;

		private Boolean isAndroid = false;

		public String getUserId() {
			return userId;
		}

		public void setUserId(String userId) {
			this.userId = userId;
		}
		//		public String getLoginName()
//		{
//			return login_name;
//		}
//		public void setLoginName(String login_name)
//		{
//			this.login_name = login_name;
//		}
	//
//		public void setValid(boolean valid)
//		{
//			this.valid = valid;
//		}
	//	
//		public String getLoginPsw()
//		{
//			return login_psw;
//		}
//		public void setLoginPsw(String login_psw)
//		{
//			this.login_psw = login_psw;
//		}
//		public boolean isValid()
//		{
//			return valid;
//		}
//		public String getTrueName()
//		{
//			return true_name;
//		}
//		public void setTrueName(String true_name)
//		{
//			this.true_name = true_name;
//		}
	//
//		public String getServerTimeAtLogin()
//		{
//			return serverTimeAtLogin;
//		}
//		public void setServerTimeAtLogin(String serverTimeAtLogin)
//		{
//			this.serverTimeAtLogin = serverTimeAtLogin;
//		}
		
		public String getIp()
		{
			return ip;
		}
		public void setIp(String ip)
		{
			this.ip = ip;
		}
		
//		public String toString()
//		{
////			return "user:"+this.yhm+"<"+this.xm+">";
//			return this.login_name;
//		}
	//	
//		/**
//		 * <p>
//		 * 如果是超级管理员，本方法返回true.
//		 * 目前只有"admin"是超级管理员，它无权限限制（拥有所有功能的权限）.
//		 * </p>
//		 * @return
//		 */
//		public final boolean isSuperMan()
//		{
//			return this.login_name.equals("admin");
//		}


		public String getNickname() {
			return nickname;
		}

		public void setNickname(String nickname) {
			this.nickname = nickname;
		}

		public String getUserMail() {
			return userMail;
		}

		public void setUserMail(String userMail) {
			this.userMail = userMail;
		}

		public Boolean getAndroid() {
			return isAndroid;
		}

		public void setAndroid(Boolean android) {
			isAndroid = android;
		}
	}

}
